using Cysharp.Threading.Tasks;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;


//一些需要用到等待的Unity对象提供GetAwaiter()功能,从而拿到Awaiter对象就可以进行await. UniTask已经对各种各样的Unity对象进行了GetAwaiter的扩展
//1.Coroutine 的等待(23行) UniTask 的转换(38行)
//2.AsyncOperation的等待 如场景异步加载 资源异步加载 网络请求
//3.UGUI的部分响应方式等待 如按钮点击 动画播放 粒子播放等
//4.MonoBehaviour的部分功能可以等待 如触发器?
//5.部分插件的扩展 DoTween

public class Six : MonoBehaviour
{
    private async void Start()
    {
        StartCoroutine(CoroutineTest());
        // await StartCoroutine(CoroutineTest());
        // await CoroutineTest();

        StartCoroutine(CoroutineTest1());
    }

    private IEnumerator CoroutineTest()
    {
        Debug.Log("Coroutine Start:" + Time.time);
        yield return new WaitForSeconds(1); // 协程的方式
        Debug.Log("Coroutine End:" + Time.time);
    }

    private IEnumerator CoroutineTest1()
    {
        Debug.Log("Coroutine Start:" + Time.time);
        yield return UniTask.Delay(TimeSpan.FromSeconds(1)).ToCoroutine(); // Unitask 转协程的方式
        Debug.Log("Coroutine End:" + Time.time);
    }
}